package com.data.service.impl;

import com.data.entity.User;
import com.data.service.IUserService;
import org.springframework.stereotype.Service;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;

/**
 * Created by wuyal on 2018/3/20.
 */
@Service
public class UserServiceImpl implements IUserService{
    /**
     * 直接定义全局变脸
      */
    List<User> userList;

    /**
     * 直接初始化添加排序数据
     * @return 用户数据
     */
    private List<User> initUserList(){
        if(userList ==null)
        {
            /**直接添加数据**/
            userList =new ArrayList<User>();
            User user= new User();
            user.setId(1);
            user.setLoginname("andy");
            user.setName("Andy");
            userList.add(user);

            user= new User();
            user.setId(4);
            user.setLoginname("dolly");
            user.setName("Dolly");
            userList.add(user);

            user= new User();
            user.setId(3);
            user.setLoginname("bruce");
            user.setName("Bruce");
            userList.add(user);

            user= new User();
            user.setId(2);
            user.setLoginname("carl");
            user.setName("Carl");
            userList.add(user);


        }
        return  userList;
    }



    @Override
    public List<User> queryUserDataBySort(String col) {
        initUserList();
        if(col !=null ){
            //list 的排序方法
            Collections.sort(userList, new Comparator<User>() {
                /**
                 *
                 * @param o1 比较对象实体
                 * @param o2
                 * @return int 比较结果 ，排序userList
                 */
                public int compare(User o1, User o2) {
                    if("id".equals(col))
                     return o1.getId().compareTo(o2.getId());
                    else if("name".equals(col))
                        return o1.getLoginname().compareTo(o2.getLoginname());
                    else
                       return o1.getId().compareTo(o2.getId());
                }
            });
        }

        return userList;
    }
}
